package tasks

import contributors.*

//suspend只是挂起，在当前协程中执行的任务仍然是同步顺序执行的，如果要并行，需要在当前协程中创建新的协程
suspend fun loadContributorsSuspend(service: GitHubService, req: RequestData): List<User> {
    val repos = service.getOrgRepos(req.org)
        .also { logRepos(req, it) }
        .body() ?: emptyList()
    return repos.flatMap { repo ->
        service.getRepoContributors(req.org, repo.name)
            .also { logUsers(repo, it) }
            .body() ?: emptyList()
    }.aggregate()
}